<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <title>绪论</title>
    <meta charset="utf-8" />
    <link rel="stylesheet" type="text/css" href="../../css/note.css" />
</head>
<body>

<h2>数据库系统概述</h2>

<h3>四个基本概念</h3>

<ul>
	<li><b>数据</b>是描述事物的符号记录，是数据库中存储的基本对象。</li>
	<li><b>数据库</b> (DataBase, DB) 是长期储存在计算机内、有组织的、可共享的大量数据的集合。
	</li>
	<li><b>数据库管理系统</b> (DataBase Management System, DBMS) 和操作系统一样，是计算机的基础软件。它能科学地组织和存储数据，高效地获取和维护数据。</li>
	<li><b>数据库系统</b> (DataBase System, DBS)
		是由数据库、数据库管理系统（及其应用开发工具）、应用程序和数据库管理员
	(DataBase Administrator, DBA) 组成的存储、管理、处理和维护数据的系统。
	其中数据库提供数据的存储功能，数据库管理系统提供数据的组织、存取、管理和维护等基础功能，数据库应用系统根据应用需求使用数据库，数据库管理员负责全面管理数据库系统。在不引起混淆的情况下，常把数据库系统简称为数据库。
	</li>
</ul>

<h3>数据管理技术发展的三个阶段</h3>

<ul>
	<li><b>人工管理阶段</b> 数据不保存、由应用程序直接管理、不共享、不具有独立性。</li>
	<li><b>文件系统阶段</b> 数据可以长期保存、由文件系统管理、共享性差、冗余度大、独立性差</li>
	<li><b>数据库系统阶段</b>
	永久存储、有组织、可共享。
	数据库中的数据按一定的数据模型组织、描述和储存，具有较小的冗余度
	(recundancy)、较高的数据独立性 (data independency) 和易扩展性
	(scalability)，并可为各种用户共享。
	</li>
	从文件系统到数据库系统标志着数据管理技术的飞跃。
</ul>

<h3>数据库系统的特点</h3>

<ul>
	<b>数据库管理系统的主要功能</b>
	<li>数据定义功能。提供数据定义语言 (Data Definition Language,
		DDL)，方便用户定义数据库中数据对象的组成与结构。</li>
	<li>数据组织、存储和管理。包括数据字典、用户数据、数据的存取路径等。数据组织和存储的基本目标是提高存储空间利用率和方便存取。</li>
	<li>数据操纵功能。提供数据操纵语言 (Data Manipulation Language,
		DML)，实现了增删改查等操作。</li>
	<li>数据库控制功能，即数据库的事务管理和运行管理。保证事务正确运行，保证数据安全性 (security) 、完整性 (integrity)，实现多用户对数据的并发 (concurency) 使用及故障恢复 (recovery) 功能。
		数据的安全性是指保护数据以防止不合法使用造成的数据泄密和破坏。
		数据的完整性是指数据的正确性、有效性和相容性。
	</li>
	<li>数据库的建立和维护。包括初始数据输入、转换功能，数据库转储、恢复功能，数据库重组织功能和性能监视、分析功能等。</li>
	<li>其他，包括数据库管理系统与网络中其他软件系统的通信功能，数据库管理系统之间或与文件系统间的数据转换功能，异构数据库之间的互访和互操作功能等。</li>
</ul>

<ul>
	<b>数据库系统的特点</b>
	<li><b>数据结构化</b>
	数据库系统实现整体数据的结构化，这是数据库的主要特征之一，也是数据库系统与文件系统的本质区别。所谓“整体”结构化是指数据库中的数据不再仅仅针对某一个应用，而是面向整体组织或企业；不仅数据内部是结构化的，而且整体是结构化的，数据之间是具有联系的。
	</li>
	<li><b>数据共享性高、冗余度低、易扩充</b>
	数据共享可以大大减少数据冗余，节约存储空间。数据共享性还能够避免数据之间的不相容性与不一致性。由于数据面向整个系统，是有结构的数据，不仅可以被多个应用共享使用，而且容易增加新的应用，这就使得数据库系统弹性大，易于扩充。</li>
	<li><b>数据独立性高</b>
	数据独立性包括物理独立性和逻辑独立性。物理独立性是指用户的应用程序与数据库中数据的物理存储是相互独立的。逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。数据独立性由数据库管理系统提供的二级映像功能保证。</li>
	<li><b>数据由数据库管理系统统一管理和控制</b>
	数据控制功能主要包括数据安全性、数据完整性、并发控制和数据库恢复。</li>
</ul>

<p>
综上所述，数据库是长期存储在计算机内有组织、大量、共享的数据集合。它可以供各种用户共享，具有最小冗余度和较高的数据独立性。数据库管理系统在数据库建立、运用和维护时对数据库进行统一控制，以保证数据的完整性和安全性，并在多用户同时使用数据库时进行并发控制，在发生故障后对数据库进行恢复。
数据库系统的出现使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。
</p>

<h2>数据模型</h2>

<p><b>数据模型</b>是对现实世界数据特征的抽象，是用来描述数据、组织数据和对数据进行操作的。数据模型是数据库系统的核心和基础，各种机器上实现的数据库管理系统软件都是基于某种数据模型或支持某种数据模型的。</p>

<h3>两类数据模型</h3>

<ul>
	<li><b>概念模型</b> (conceptual model)，也称信息模型，是按用户的观点来对数据和信息建模，主要用于数据库设计。</li>
	<li><b>逻辑模型和物理模型</b> <b>逻辑模型</b>按计算机系统的观点对数据建模，主要用于数据库管理系统的实现。<b>物理模型</b>是对数据最底层的抽象，它描述数据在系统内部或磁盘或磁带上的表示方式和存取方法，是面向计算机系统的。物理模型的具体实现是数据库管理系统的任务，数据库设计人员要了解和选择物理模型，最终用户则不必考虑物理级的细节。</li>
</ul>

<p> 把现实世界抽象为某种数据模型，先将现实世界抽象为信息世界，再将信息世界转换为机器世界。</p>

<h3>概念模型</h3>

<ul>
	信息世界主要涉及的概念：
	<li><b>实体</b> (entity)。客观存在并可相互区别的事物。</li>
	<li><b>属性</b> (attribute)。实体所具有的某一种特性。</li>
	<li><b>码 (或键)</b> (key)。唯一标识实体的属性集。</li>
	<li><b>实体型</b> (entity
		type)。用实体名及其属性名集合来抽象和刻画同类实体，称为实体型。例如，学生（学号，姓名，性别，出生年月，所在院系，入学时间）就是一个实体型。</li>
	<li><b>实体集</b> (entity set)。同一类型实体的集合称为实体集。</li>
	<li><b>联系</b>
		(relationship)。实体内部的联系通常指组成实体的各属性之间的联系，实体之间的联系通常指不同实体集之间的联系。实体之间的联系有一对一，一对多和多对多等多种类型。</li>
</ul>

<p>	概念模型可用实体-联系方法 (Entity-Relationship approach)
来表示。该方法用 E-R 图 (Entity-Relationship diagram)
来描述现实世界的概念模型，E-R 方法也称为 E-R 模型。
</p>

<h3>数据模型的组成要素</h3>

<ul> 数据模型是严格定义的一组概念的集合。这些概念精确地描述了系统的静态特性、动态特性和完整性约束条件 (integrity constraints)。数据模型通常由数据结构、数据操作和数据的完整性约束条件三部分组成。
	<li><b>数据结构</b>描述数据库的组成对象以及对象之间的联系。</li>
	<li><b>数据操作</b>是指对数据库中各种对象（型）的实例（值）允许执行的操作的集合，包括操作及有关的操作规则。</li>
	<li><b>数据的完整性约束条件</b>是一组完整性规则。完整生规则是给定的数据模型中数据及其联系所具有的制约和依存规则，用以限定符合数据模型的数据库状态以及状态的变化，以保证数据的正确、有效和相容。</li>
</ul>

<h3>常用的数据模型</h3>

<ul>
	<li>层次模型 (hierarchical model)</li>
	<li>网状模型 (network model)</li>
	<li>关系模型 (relational model)</li>
	<li>面向对象模型 (object oriented data model)</li>
	<li>对象关系数据模型 (object relational data model)</li>
	<li>半结构化数据模型 (semistructured data model)</li>
	其中层次模型和网状模型统称为格式化模型。
</ul>

<h4>层次模型</h4>

<ul>
	层次模型的完整性约束
	<li>进行插入操作时，如果没有相应的父结点值就不能插入子结点值；</li>
	<li>进行删除操作时，其所有子结点值也被同时删除。</li>
</ul>

<ul>
	层次模型的优点
	<li>数据结构比较简单清晰</li>
	<li>查询效率高，查询性能优于关系数据库，不低于网状数据库。</li>
	<li>提供了良好的完整性支持。</li>
</ul>

<ul>
	层次模型的缺点
	<li>现实世界中很多联系是非层次性的</li>
	<li>如果一个结点具有多个父结点，用层次模型表示时就很笨拙。只能通过引入冗余数据（易产生不一致性）或创建非自然的数据结构（虚拟结点）来解决。对插入和删除的限制比较多。</li>
	<li>查询子结点必须通过父结点。</li>
	<li>由于结构严密，层次命令趋于程序化。</li>
</ul>

<h4>网状模型</h4>

<ul>
	网状模型的优点
	<li>能够更直接地描述现实世界</li>
	<li>具有良好的性能，存取效率高</li>
</ul>

<ul>
	网状模型的缺点
	<li>结构比较复杂，不利于用户掌握</li>
	<li>DDL, DML 复杂，并且要嵌入某一种高级语言中，不利于用户掌握</li>
	<li>由于记录之间的联系是通过存取路径实现的，应用程序在访问数据时必须选择适当的存取路径，因此用户必须了解系统结构的细节，加重了编写应用程序的负担。</li>
</ul>

<h4>关系模型</h4>

<ul>
	从用户观点看，关系模型由一组关系组成。每个关系的数据结构是一张规范化的二维表。
	<li><b>关系</b> (relation) 即通常说的一张表</li>
	<li><b>元组</b> (tuple) 是表中的一行</li>
	<li><b>属性</b> (attribute) 是表中的一列</li>
	<li><b>码(或键)</b> (key) 是表中的某个属性组，它唯一确定一个元组</li>
	<li><b>域</b> (domain) 是一组具有相同数据类型的集合，是属性的取值范围。</li>
	<li><b>分量</b>是元组中的一个属性值</li>
	<li><b>关系模式</b>即表头，是对关系的描述。一般形式为
		<span class="formula">
			关系名(属性1, 属性2, …, 属性 n)
		</span>
	</li>
</ul>

<p> 关系模型要求关系必须是规范化的，其中一个基本要求是，关系的每一个分量必须是不可分的数据项。
</p>

<p>	关系模型的完整性约束条件包括实体完整性、参照完整性和用户定义的完整性。</p>

<p> 关系模型中的数据操作是集合操作，操作对象和操作结果都是关系。关系模型把存取路径向用户隐蔽起来，用户只要指出“干什么”或“找什么”，不必详细说明“怎么干”或“怎么找”，从而大大提高了数据的独立性，提高了用户生产率。
</p>

<ul>
	关系模型的优点
	<li><del>与格式化模型不同，它是建立在严格的数学概念的基础上的</del></li>
	<li>概念单一。无论实体还是实体之间的联系都用关系来表示，对数据的检索和更新结果也是关系（即表）。所以其数据结构简单、清晰，用户易懂易用。</li>
	<li>关系模型的存取路径对用户透明（即用户不可见），从而具有更高的数据独立性、更好的安全保密性，也简化了程序员的工作和数据库开发建立的工作</li>
</ul>

<p> 关系模型的缺点有，由于存取路径对用户隐蔽，查询效率往往不如格式化数据模型。为了提高性能，数据库管理系统必须对用户的查询请求进行优化，因此增加了开发数据库管理系统的难度。
</p>

<h2>数据库系统的结构</h2>

<h3>数据库系统模型的概念</h3>

<p>	在数据模型中有“型” (type) 和“值” (value) 的概念。模式 (schema)
是数据库中全体数据的逻辑结构和特征的描述，它仅仅涉及型的描述，不涉及具体的值。模式的一个具体值称为模式的一个实例
(instance)。模式是相对稳定的，而实例是相对变动的。
</p>

<h3>数据库系统的三级模式结构</h3>

<ul>
	<li><b>模式</b> (schema) 模式也称逻辑模式，是数据库中全体数据的逻辑结构和特征的描述，是所有用户的公共数据视图。它是数据库系统模式结构的中间层，是数据库数据在逻辑级上的视图。</li>
	<li><b>外模式</b> (external schema) 也称子模式 (subschema) 或用户模式，它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述，是数据库用户的数据视图，是与某一应用有关的数据的逻辑表示。外模式通常是模式的子集。</li>
	<li><b>内模式</b> (internal schema) 也称存储模式 (storage schema)，它是数据物理结构和存储方式的描述，是数据在数据库内部的组织方式。</li>
	一个数据库可以有多个外模式，但只有一个模式和一个内模式。
</ul>

<h3>数据库的二级映像功能与数据独立性</h3>

<ul>
	<li><b>外模式/模式映像</b> 当模式改变时，由数据库管理员对各个外模式/模式的映像作相应改变，可以使外模式保持不变。从而依据外模式编写的应用程序不必修改，保证了数据与程序的逻辑独立性。</li>
	<li><b>模式/内模式映像</b> 当数据库的存储结构改变时，由数据库管理员对模式/内模式的映像作相应改变，可以使模式保持不变，从而应用程序也不必改变。保证了数据与程序的物理独立性。</li>
</ul>

<p> 数据与程序之间的独立性使得数据的定义的描述可以从应用程序中分离出去。由于数据的存取由数据库管理系统管理，从而简化了应用程序的编制，大大减少了应用程序的维护和修改。
</p>

<h2>数据库系统的组成</h2>

<h3>硬件平台及数据库</h3>

<ul>
	数据库系统对硬件平台的要求：
	<li>有足够大的内存，存放操作系统、数据库管理系统的核心模块、数据缓冲区和应用程序</li>
	<li>有足够大的磁盘或磁盘阵列等设备存放数据库，有足够大的磁带（或光盘）作数据备份。</li>
	<li>要求系统有较高的通道能力，以提高数据传送率。</li>
</ul>

<h3>软件</h3>

<ul>
	数据库系统的软件主要包括：
	<li>数据库管理系统</li>
	<li>支持数据库管理系统运行的操作系统</li>
	<li>具有与数据库接口的高级语言及其编译系统，便于开发程序</li>
	<li>以数据库管理系统为核心的应用开发工具</li>
	<li>为特定应用环境开发的数据库应用系统</li>
</ul>

<h3>人员</h3>

<ul>
	<li><b>数据库管理员</b>负责全面管理和控制数据库系统，具体职责有
		<ul>
			<li>决定数据库中的信息内容和结构</li>
			<li>决定数据库的存储结构和存取策略</li>
			<li>定义数据的安全性要求和完整性约束条件</li>
			<li>监控数据库和使用的运行</li>
			<li>数据库的改进和重组、重构</li>
		</ul>
	</li>
	<li>系统分析员和数据库设计人员。前者负责应用系统的需求分析和规范说明，和用户及数据库管理员相结合，确定系统的硬件软件配置，并参与数据库系统的概要设计。后者负责数据库中数据的确定及数据库各级模式的设计。数据库设计人员必须参加用户需求调查和系统分析，然后进行数据库设计。在很多情况下，数据库设计人员就由数据库管理员担任。</li>
	<li>应用程序员负责设计和编写应用系统的程序模块，并进行调试和安装。</li>
	<li>用户，这里指最终用户 (end user)。他们通过应用系统的用户接口使用数据库。常用的接口方式有浏览器、菜单驱动、表格操作、图形显示、报表书写等。</li>
</ul>

<script src="../../js/note.js?type=cs"></script>
</body>
</html>
